
jBGallery.Data = function(el, data, options){
    
  var _items = [];
    function _add(o, method){
    if ($.isArray(o)){
            $.each(o, function(i,v){
        o[i] = _extend(v);
        _items[method](o[i]);
            });
        } else {
            o = _extend(o);
      _items[method](o);
        }
    return o;
    }
  function _extend(o){
    var _o;
    if (typeof o == "string") {
        _o = _extend({href : o});
    } else {
            _o = $.extend({
              href : '', 
              title: '', 
              caption : '',
              caption_css : '', 
              thumb : '', 
              rel : ''
          },o);
    }
    
    if(_o.thumb.length == 0 || !_o.thumb)
        _o.thumb = _o.href;
    return _o;
  }
    function _init(){
    _items = $.map($(el).find("ul > li"), function(li, i){
          var _a = $("a", li).get(0);
          return _add({
              href        : _a.href, 
              title       : _a.title, 
              rel         : _a.rel,
              caption     : $("div.caption", li).html(),
              caption_css : $("div.caption", li).clone().removeClass("caption").attr("class"), 
              thumb : $("img", li).attr("src") 
          },'push');
        
        });
  }
  _init();
  
    return {
    get : function(i){
      if(_items[i])
          return _items[i];
      else
          return _extend('');//mock object - provo ad inizializzare l'engine anche senza elementi
    },
    items : function(){
      return _items;
    },
    push : function(o){
      return _add(o, 'push');
    },
    unshift : function(o){
      return _add(o, 'unshift');
    },
    shift : function(){
      _items.shift();
    },
    pop : function(){
      _items.pop();
    },
    empty : function(){
      _items = [];
    },
    length : function(){
      return _items.length;
    }
  } 
};